1. Technical Field
The present invention relates to data processing in general, and more particularly, to a method and apparatus for transferring data between applications. Still more particularly, the present invention relates to a method and apparatus for handling multiple data transfer requests from one application within a computer system.
2. Description of Related Art
Within a computer system, a data transfer request by an application is typically encapsulated within a Data Definition (DD) packet that specifies a source, a destination, and a length of the data transfer. A DD chain can be generated by an application when the application needs to make multiple data transfers.
Hardware components known as Direct Memory Access (DMA) engines are commonly utilized to perform data transfer operations, and one DMA engine is usually assigned to handle all data transfer requests from one application. Thus, when there are multiple data transfers requested by an application, all the data transfers have to be handled by a single DMA engine sequentially.
There are several drawbacks with handing multiple data transfer requests from one application in a serial manner. For example, the data transfer rate of a long DD chain is limited by the speed of a single DMA engine. Also, if an error, such as an unrecoverable hardware failure, occurs in the single DMA engine that is handling the long DD chain, the corresponding data transfer operation will fail. Furthermore, computer systems that contain multiple DMA engines may not fully utilize all of the available DMA hardware resources.
Consequently, it would be desirable to provide an improved method and apparatus for handling multiple data transfer requests from one application within a computer system.